/*
 * Copyright (c) 2022-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// HANDWRITTEN (for now)

export enum Es2pandaAstNodeType {
    AST_NODE_TYPE_ARROW_FUNCTION_EXPRESSION,
    AST_NODE_TYPE_ANNOTATION_DECLARATION,
    AST_NODE_TYPE_ANNOTATION_USAGE,
    AST_NODE_TYPE_ASSERT_STATEMENT,
    AST_NODE_TYPE_AWAIT_EXPRESSION,
    AST_NODE_TYPE_BIGINT_LITERAL,
    AST_NODE_TYPE_BINARY_EXPRESSION,
    AST_NODE_TYPE_BLOCK_STATEMENT,
    AST_NODE_TYPE_BOOLEAN_LITERAL,
    AST_NODE_TYPE_BREAK_STATEMENT,
    AST_NODE_TYPE_CALL_EXPRESSION,
    AST_NODE_TYPE_CATCH_CLAUSE,
    AST_NODE_TYPE_CHAIN_EXPRESSION,
    AST_NODE_TYPE_CHAR_LITERAL,
    AST_NODE_TYPE_CLASS_DEFINITION,
    AST_NODE_TYPE_CLASS_DECLARATION,
    AST_NODE_TYPE_CLASS_EXPRESSION,
    AST_NODE_TYPE_CLASS_PROPERTY,
    AST_NODE_TYPE_CLASS_STATIC_BLOCK,
    AST_NODE_TYPE_CONDITIONAL_EXPRESSION,
    AST_NODE_TYPE_CONTINUE_STATEMENT,
    AST_NODE_TYPE_DEBUGGER_STATEMENT,
    AST_NODE_TYPE_DECORATOR,
    AST_NODE_TYPE_DIRECT_EVAL,
    AST_NODE_TYPE_DO_WHILE_STATEMENT,
    AST_NODE_TYPE_EMPTY_STATEMENT,
    AST_NODE_TYPE_EXPORT_ALL_DECLARATION,
    AST_NODE_TYPE_EXPORT_DEFAULT_DECLARATION,
    AST_NODE_TYPE_EXPORT_NAMED_DECLARATION,
    AST_NODE_TYPE_EXPORT_SPECIFIER,
    AST_NODE_TYPE_EXPRESSION_STATEMENT,
    AST_NODE_TYPE_FOR_IN_STATEMENT,
    AST_NODE_TYPE_FOR_OF_STATEMENT,
    AST_NODE_TYPE_FOR_UPDATE_STATEMENT,
    AST_NODE_TYPE_FUNCTION_DECLARATION,
    AST_NODE_TYPE_FUNCTION_EXPRESSION,
    AST_NODE_TYPE_IDENTIFIER,
    AST_NODE_TYPE_DUMMYNODE,
    AST_NODE_TYPE_IF_STATEMENT,
    AST_NODE_TYPE_IMPORT_DECLARATION,
    AST_NODE_TYPE_IMPORT_EXPRESSION,
    AST_NODE_TYPE_IMPORT_DEFAULT_SPECIFIER,
    AST_NODE_TYPE_IMPORT_NAMESPACE_SPECIFIER,
    AST_NODE_TYPE_IMPORT_SPECIFIER,
    AST_NODE_TYPE_LABELLED_STATEMENT,
    AST_NODE_TYPE_MEMBER_EXPRESSION,
    AST_NODE_TYPE_META_PROPERTY_EXPRESSION,
    AST_NODE_TYPE_METHOD_DEFINITION,
    AST_NODE_TYPE_NAMED_TYPE,
    AST_NODE_TYPE_NEW_EXPRESSION,
    AST_NODE_TYPE_NULL_LITERAL,
    AST_NODE_TYPE_UNDEFINED_LITERAL,
    AST_NODE_TYPE_NUMBER_LITERAL,
    AST_NODE_TYPE_OMITTED_EXPRESSION,
    AST_NODE_TYPE_OVERLOAD_DECLARATION,
    AST_NODE_TYPE_PREFIX_ASSERTION_EXPRESSION,
    AST_NODE_TYPE_PROPERTY,
    AST_NODE_TYPE_REGEXP_LITERAL,
    AST_NODE_TYPE_REEXPORT_STATEMENT,
    AST_NODE_TYPE_RETURN_STATEMENT,
    AST_NODE_TYPE_SCRIPT_FUNCTION,
    AST_NODE_TYPE_SEQUENCE_EXPRESSION,
    AST_NODE_TYPE_STRING_LITERAL,
    AST_NODE_TYPE_ETS_NON_NULLISH_TYPE,
    AST_NODE_TYPE_ETS_NULL_TYPE,
    AST_NODE_TYPE_ETS_UNDEFINED_TYPE,
    AST_NODE_TYPE_ETS_NEVER_TYPE,
    AST_NODE_TYPE_ETS_STRING_LITERAL_TYPE,
    AST_NODE_TYPE_ETS_INTRINSIC_NODE_TYPE,
    AST_NODE_TYPE_ETS_FUNCTION_TYPE,
    AST_NODE_TYPE_ETS_WILDCARD_TYPE,
    AST_NODE_TYPE_ETS_PRIMITIVE_TYPE,
    AST_NODE_TYPE_ETS_PACKAGE_DECLARATION,
    AST_NODE_TYPE_ETS_CLASS_LITERAL,
    AST_NODE_TYPE_ETS_TYPE_REFERENCE,
    AST_NODE_TYPE_ETS_TYPE_REFERENCE_PART,
    AST_NODE_TYPE_ETS_UNION_TYPE,
    AST_NODE_TYPE_ETS_KEYOF_TYPE,
    AST_NODE_TYPE_ETS_NEW_ARRAY_INSTANCE_EXPRESSION,
    AST_NODE_TYPE_ETS_NEW_MULTI_DIM_ARRAY_INSTANCE_EXPRESSION,
    AST_NODE_TYPE_ETS_NEW_CLASS_INSTANCE_EXPRESSION,
    AST_NODE_TYPE_ETS_IMPORT_DECLARATION,
    AST_NODE_TYPE_ETS_PARAMETER_EXPRESSION,
    AST_NODE_TYPE_ETS_TUPLE,
    AST_NODE_TYPE_ETS_MODULE,
    AST_NODE_TYPE_SUPER_EXPRESSION,
    AST_NODE_TYPE_STRUCT_DECLARATION,
    AST_NODE_TYPE_SWITCH_CASE_STATEMENT,
    AST_NODE_TYPE_SWITCH_STATEMENT,
    AST_NODE_TYPE_TS_ENUM_DECLARATION,
    AST_NODE_TYPE_TS_ENUM_MEMBER,
    AST_NODE_TYPE_TS_EXTERNAL_MODULE_REFERENCE,
    AST_NODE_TYPE_TS_NUMBER_KEYWORD,
    AST_NODE_TYPE_TS_ANY_KEYWORD,
    AST_NODE_TYPE_TS_STRING_KEYWORD,
    AST_NODE_TYPE_TS_BOOLEAN_KEYWORD,
    AST_NODE_TYPE_TS_VOID_KEYWORD,
    AST_NODE_TYPE_TS_UNDEFINED_KEYWORD,
    AST_NODE_TYPE_TS_UNKNOWN_KEYWORD,
    AST_NODE_TYPE_TS_OBJECT_KEYWORD,
    AST_NODE_TYPE_TS_BIGINT_KEYWORD,
    AST_NODE_TYPE_TS_NEVER_KEYWORD,
    AST_NODE_TYPE_TS_NON_NULL_EXPRESSION,
    AST_NODE_TYPE_TS_NULL_KEYWORD,
    AST_NODE_TYPE_TS_ARRAY_TYPE,
    AST_NODE_TYPE_TS_UNION_TYPE,
    AST_NODE_TYPE_TS_TYPE_LITERAL,
    AST_NODE_TYPE_TS_PROPERTY_SIGNATURE,
    AST_NODE_TYPE_TS_METHOD_SIGNATURE,
    AST_NODE_TYPE_TS_SIGNATURE_DECLARATION,
    AST_NODE_TYPE_TS_PARENT_TYPE,
    AST_NODE_TYPE_TS_LITERAL_TYPE,
    AST_NODE_TYPE_TS_INFER_TYPE,
    AST_NODE_TYPE_TS_CONDITIONAL_TYPE,
    AST_NODE_TYPE_TS_IMPORT_TYPE,
    AST_NODE_TYPE_TS_INTERSECTION_TYPE,
    AST_NODE_TYPE_TS_MAPPED_TYPE,
    AST_NODE_TYPE_TS_MODULE_BLOCK,
    AST_NODE_TYPE_TS_THIS_TYPE,
    AST_NODE_TYPE_TS_TYPE_OPERATOR,
    AST_NODE_TYPE_TS_TYPE_PARAMETER,
    AST_NODE_TYPE_TS_TYPE_PARAMETER_DECLARATION,
    AST_NODE_TYPE_TS_TYPE_PARAMETER_INSTANTIATION,
    AST_NODE_TYPE_TS_TYPE_PREDICATE,
    AST_NODE_TYPE_TS_PARAMETER_PROPERTY,
    AST_NODE_TYPE_TS_MODULE_DECLARATION,
    AST_NODE_TYPE_TS_IMPORT_EQUALS_DECLARATION,
    AST_NODE_TYPE_TS_FUNCTION_TYPE,
    AST_NODE_TYPE_TS_CONSTRUCTOR_TYPE,
    AST_NODE_TYPE_TS_TYPE_ALIAS_DECLARATION,
    AST_NODE_TYPE_TS_TYPE_REFERENCE,
    AST_NODE_TYPE_TS_QUALIFIED_NAME,
    AST_NODE_TYPE_TS_INDEXED_ACCESS_TYPE,
    AST_NODE_TYPE_TS_INTERFACE_DECLARATION,
    AST_NODE_TYPE_TS_INTERFACE_BODY,
    AST_NODE_TYPE_TS_INTERFACE_HERITAGE,
    AST_NODE_TYPE_TS_TUPLE_TYPE,
    AST_NODE_TYPE_TS_NAMED_TUPLE_MEMBER,
    AST_NODE_TYPE_TS_INDEX_SIGNATURE,
    AST_NODE_TYPE_TS_TYPE_QUERY,
    AST_NODE_TYPE_TS_AS_EXPRESSION,
    AST_NODE_TYPE_TS_CLASS_IMPLEMENTS,
    AST_NODE_TYPE_TS_TYPE_ASSERTION,
    AST_NODE_TYPE_TAGGED_TEMPLATE_EXPRESSION,
    AST_NODE_TYPE_TEMPLATE_ELEMENT,
    AST_NODE_TYPE_TEMPLATE_LITERAL,
    AST_NODE_TYPE_THIS_EXPRESSION,
    AST_NODE_TYPE_TYPEOF_EXPRESSION,
    AST_NODE_TYPE_THROW_STATEMENT,
    AST_NODE_TYPE_TRY_STATEMENT,
    AST_NODE_TYPE_UNARY_EXPRESSION,
    AST_NODE_TYPE_UPDATE_EXPRESSION,
    AST_NODE_TYPE_VARIABLE_DECLARATION,
    AST_NODE_TYPE_VARIABLE_DECLARATOR,
    AST_NODE_TYPE_WHILE_STATEMENT,
    AST_NODE_TYPE_YIELD_EXPRESSION,
    AST_NODE_TYPE_OPAQUE_TYPE_NODE,
    AST_NODE_TYPE_BLOCK_EXPRESSION,
    AST_NODE_TYPE_ERROR_TYPE_NODE,
    AST_NODE_TYPE_ARRAY_EXPRESSION,
    AST_NODE_TYPE_ARRAY_PATTERN,
    AST_NODE_TYPE_ASSIGNMENT_EXPRESSION,
    AST_NODE_TYPE_ASSIGNMENT_PATTERN,
    AST_NODE_TYPE_OBJECT_EXPRESSION,
    AST_NODE_TYPE_OBJECT_PATTERN,
    AST_NODE_TYPE_SPREAD_ELEMENT,
    AST_NODE_TYPE_REST_ELEMENT,
};

export enum Es2pandaImportFlags {
    IMPORT_FLAGS_NONE,
    IMPORT_FLAGS_DEFAULT_IMPORT,
    IMPORT_FLAGS_IMPLICIT_PACKAGE_IMPORT,
}

export enum Es2pandaLanguage {
    AS = 0,
    JS = 1,
    TS = 2,
    ETS = 3,
    COUNT = 4
}